/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once


#include "../intern/ui文本编辑.h"
#include "UI/intern/ui容器部件.h"
#include "UI/intern/ui列表.h"
#include "UI/intern/ui按钮.h"

#include "UI/Widget.h"
#include "UI/ui绘制模板.h"

#include "ui弹出菜单.h"




struct C_目录文件快捷栏 : public C_Widget {

	ui_绘制模板_画预设图形	m_滚动组件绘制;
	ui_绘制模板_画预设图形	m_分类板块绘制;
	ui_绘制模板_画预设图形	m_背景绘制;
	ui_绘制模板_行文本绘制	m_文字绘制;
	uint16	m_单色块使用计数;

	C_列表框* m_盘列表;
	C_列表框* m_收藏目录列表;
	C_列表框* m_系统目录列表;
	C_列表框* m_最近文件列表;

	C_Widget* m_文件列表;

	C_目录文件快捷栏(S_UI创建环境& ctx);
	~C_目录文件快捷栏();

	void f_刷新盘符();
	void f_刷新收藏();
	void f_刷新历史();
};



struct C_文件对话框 : public C_分割框 {
	E_对话框类型	m_文件处理方式;
	//std::wstring	m_文件路径;
	std::filesystem::path m_路径;
	//带点的后缀
	std::string		m_文件后缀;

	C_Widget*				mui_分割窗口;
	C_目录文件快捷栏*		mui_左边_盘符记录;
	C_Widget*				mui_右_浏览列表;

	C_列表框*		mui_列表框;
	C_Widget*		mui_功能条;
	C_行编辑框*		mui_文件路径编辑框;
	C_按钮*			mui_打开or确定;

	C_行编辑框*		mui_文件名编辑框;

	C_Widget*		mui_负责打开的组件;
	
	S_2D文本对象	m_编辑框文本对象;

	C_文件对话框(S_UI创建环境& ctx);

	fp_文件处理回调	mf_文件处理回调;

	void	f_set对话框模式(E_对话框类型 类型);
};












struct C_路径编辑器 : public C_Widget {
	C_文件对话框*	mui_对话框;
	fp_文件处理回调 mf_对话框回调;

	S_Props*		m_路径;
	E_对话框类型	m_对话框类型;
	bool			m_对话框是否打开;

	S_Props			m_对话框打开按钮;

	C_路径编辑器(S_UI创建环境& ctx, C_文件对话框* 对话框);
	~C_路径编辑器();

};













class C_超级列表编辑框 : public C_Widget {

public:
	C_超级列表编辑框(S_UI创建环境& ctx);
	~C_超级列表编辑框();

	S_Props		m_列表属性;

	ui_绘制模板_画预设图形	m_背景绘制;
	ui_绘制模板_图标		m_图标绘制;

	C_Widget* m_选择按钮;
	C_Widget* m_文本编辑框;
	C_Widget* m_拷贝项按钮;
	C_Widget* m_添加项按钮;
	C_Widget* m_移除项按钮;

	C_超级弹出菜单* m_列表视口;
	//C_列表框* m_列表;

	fp_PropUpdate	mf_添加项;
	fp_PropUpdate	mf_移除项;

};





